<?php

class AdmListado extends TPage{
//<editor-fold defaultstate="collapsed" desc="Constantes">
  const SESION_DATOS = "arr";
  const CAMPO_ORDEN_DATAGRID = "CampoOrdenDataGrid";
  //funciones pagina
  const FUNCION_VER = "Ver";

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Metodos Privados">
  /**
   * obtiene los registros desde la base de datos
   * @author VSR, 01/01/2011
   */
  private function obtenerDatos(){
    try {
      $oUsuario = Utilidades::obtenerSessionPorNombre(Usuario::NOMBRE_ENTIDAD);
      //obtiene valores de los controles
      $idUsuario = $oUsuario->getId();
      $entidad = Utilidades::isNull($this->ddlEntidad->obtenerSelectedValue(), "-1");

      //obtiene listado
      $arr = Archivo::obtenerListadoEntidadConFiltro($idUsuario, $entidad, Archivo::SIN_ENTIDAD);

      //guarda el resultado en session
      Utilidades::grabarSessionPorNombre(self::SESION_DATOS, $arr);
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * actualiza los controles de la pagina segun los datos obtenidos
   * @author VSR, 01/01/2011
   */
  private function actualizaInterfaz(){
    $totalRegistros = 0;
    try {
      $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS);
      if(is_null($arr)) {
        $totalRegistros = 0;
      } else {
        $totalRegistros = count($arr);
      }

      if($totalRegistros > 0) {
        $this->pnlHolderGrilla->Visible = true;
        //carga la grilla a utilizar
        $this->dgArchivos->Visible = true;
        $this->dgArchivos->DataSource = $arr;
        $this->dgArchivos->dataBind();
        Utilidades::configurarPaginadorDataGrid($this->dgArchivos->PagerStyle, $totalRegistros, $this->dgArchivos->PageSize);
        Utilidades::mostrarTotalRegistrosGrilla($totalRegistros, $this->lblTotalRegistros);
      } else {
        $this->pnlHolderGrilla->Visible = false;
        $this->pnlMensajeUsuario->Visible = true;
        $textoMensaje = "No se encontraron registros";
        Utilidades::setPanelMensajeUsuario($this->pnlMensajeUsuario, $textoMensaje, "50%", Utilidades::ESTILO_MENSAJE_ADVERTENCIA);
        //oculta la grilla
        $this->dgArchivos->Visible = false;
      }
    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * inicializa algunos controles cuando se carga por primera vez la pagina
   * @param <type> $isPostBack
   * @author VSR, 01/01/2011
   */
  private function inicializaControles($isPostBack){
    try {
      $registrosPorPagina = $this->txtFiltroRegistrosPorPagina->Text;

      //-- inicializacion de controles que dependen del postBack --
      if(!$isPostBack){
        //colocar controles
      }

      //-- inicializacion de controles que NO dependen del postBack --
      if($registrosPorPagina == "") {
        $this->txtFiltroRegistrosPorPagina->Text = Utilidades::obtenerRegistrosPorPaginaDefault($this->Application);
      }
      $this->btnFiltrar->Attributes->Add("onclick", "return(validarFormularioBusqueda())");

      //verifica los permisos sobre los controles
      $this->verificarPermisos();

    } catch (Exception $e) {
      throw new Exception($e->getMessage());
    }
  }

  /**
   * verifica los permisos sobre los controles
   * @author VSR, 01/01/2011
   */
  private function verificarPermisos(){
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    $this->pnlContenido->Visible = Utilidades::tienePermiso($paginaActual, self::FUNCION_VER);
    if(!$this->pnlContenido->Visible){
      $this->pnlMensajeAcceso->Visible = true;
      Utilidades::setPanelMensajeUsuario($this->pnlMensajeAcceso, "No tiene permiso para ver esta p&aacute;gina", "50%", Utilidades::ESTILO_MENSAJE_ERROR);
    }
  }

//</editor-fold>

//<editor-fold defaultstate="collapsed" desc="Eventos Controles">
  public function onLoad($param) {
    parent::onLoad($param);
    $this->inicializaControles($this->IsPostBack);
    $this->txtThemeBaseUrl->Value = $this->Page->Theme->BaseUrl;
  }

  public function btnFiltrarClick($sender, $param){
    $pageSize = trim($this->txtFiltroRegistrosPorPagina->Text);
    if($pageSize == "" || $pageSize == "0") {
      $pageSize = Utilidades::obtenerRegistrosPorPaginaDefault($this->Application);
      $this->txtFiltroRegistrosPorPagina->Text = $pageSize;
    }
    //asigna total de registros por pagina
    $this->dgArchivos->PageSize = $pageSize;
    //Muestra la primera pagina del paginador
    $this->dgArchivos->CurrentPageIndex = 0;
    $this->obtenerDatos();
    $this->actualizaInterfaz();
  }

  public function onSortDataGrid($sender, $param) {
    $arr = Utilidades::obtenerSessionPorNombre(self::SESION_DATOS);
    $campoOrdenActualDataGrid = Utilidades::isNull(Utilidades::obtenerSessionPorNombre(self::CAMPO_ORDEN_DATAGRID),"");
    //obtiene el nuevo orden del arreglo
    $arr = Utilidades::obtenerSortArray($arr, $campoOrdenActualDataGrid, $param->SortExpression);
    //graba el orden actual
    Utilidades::grabarSessionPorNombre(self::CAMPO_ORDEN_DATAGRID, $campoOrdenActualDataGrid);
    //graba el array ordenado
    Utilidades::grabarSessionPorNombre(self::SESION_DATOS, $arr);
    //asigna
    $this->actualizaInterfaz();
  }

  public function onChangePageDataGrid($sender,$param) {
    $this->dgArchivos->CurrentPageIndex = $param->NewPageIndex;
    $this->actualizaInterfaz();
  }

  public function onPagerCreatedDataGrid($sender,$param) {
    $param->Pager->Controls->insertAt(0,"<span class=\"cssPaginadorNormal\">P&aacute;gina:</span> ");
  }

  public function onDataBoundDataGrid($sender, $param){
    $paginaActual = Utilidades::obtenerNombrePaginaActual($this);
    $indicePrimeraFila = Utilidades::obtenerIndicePrimeraFilaGrilla($this->dgArchivos);
    $queryString = "";
    $themeBaseUrl = $this->txtThemeBaseUrl->Value;
    $item = $param->Item;
    
    if($item->ItemType==='Item' || $item->ItemType==='AlternatingItem')
    {
      $txtTotalArchivos = $item->findControl("txtTotalArchivos");
      $txtTotalTamano = $item->findControl("txtTotalTamano");
      $txtEntidad = $item->findControl("txtEntidad");
      $lblTotalArchivos = $item->findControl("lblTotalArchivos");
      $lblTotalTamano = $item->findControl("lblTotalTamano");
      $lblDetalleEntidad = $item->findControl("lblDetalleEntidad");
      $lblEntidad = $item->findControl("lblEntidad");

      //formatea valores
      $totalArchivos = Utilidades::formatearConSeparadorMiles($txtTotalArchivos->Value);
      $totalTamano = Utilidades::convertirUnidadMedidaArchivo($txtTotalTamano->Value, true);

      //construye queryString
      $queryString = "{";
      $queryString .= " \"Entidad\":\"".$txtEntidad->Value."\"";
      $queryString .= "}";
      $queryString = Criptografia::encriptarURL($queryString);

      //asigna valores
      $icono = Utilidades::obtenerIconoTamanoArchivo($txtTotalTamano->Value, "Entidad", $themeBaseUrl);
      $lblTotalArchivos->Text = $totalArchivos;
      $lblTotalTamano->Text = ($txtEntidad->Value == Archivo::SIN_ENTIDAD) ? "&nbsp;" : $icono."&nbsp;".$totalTamano;
      $lblDetalleEntidad->Text = "<a href=\"javascript:;\" onclick=\"visitarUrl('".$this->Service->constructUrl("Archivo.AdmListadoPorEntidad")."&a=".$queryString."');\"><img src=\"" . $themeBaseUrl . "/img/_blank.gif\" class=\"ico18-view\" alt=\"ver detalle\" title=\"ver detalle\" /></a>";
      $lblEntidad->Text = "<a href=\"javascript:;\" onclick=\"visitarUrl('".$this->Service->constructUrl("Archivo.AdmListadoPorEntidad")."&a=".$queryString."');\" class=\"cssLink\">".$txtEntidad->Value."</a>";

      //limpia controles
      $txtTotalArchivos->Value = "";
      $txtTotalTamano->Value = "";
      $txtEntidad->Value = "";

      //asigna indice de la fila
      $indiceFila = $indicePrimeraFila + $item->ItemIndex;
      //asigna valor del indice de la fila al control
      Utilidades::setControlIndiceFila($item, "lblIndiceFila", $indiceFila);
    }
  }

//</editor-fold>

}
?>
